import { ref } from "vue";
import { userLogin } from "@/apis/users";
import { defineStore } from "pinia";
import { useCartStore } from '@/stores/cartStore';
import { mergeCartAPI } from "@/apis/cart";

//登录post到的数据将来可能多个组件会需要打印渲染，所以用Pinia保存
export const useUserStore = defineStore('user', () => {
  const cart = useCartStore()
  const userInfo = ref({})
  const getUserInfo = async ({ account, password }) => {
    const res = await userLogin({ account, password })
    userInfo.value = res.result
    // 合并购物车
    await mergeCartAPI(cart.cartList.map((item) => {
      return {
        skuId: item.skuId,
        selected: item.selected,
        count: item.count
      }
    }))
    cart.updataNewList()
  }
  const clearUserInfo = () => {
    userInfo.value = {}
    // 清空购物车列表
    cart.clearCartList()
  }
  return {
    userInfo,
    getUserInfo,
    clearUserInfo
  }
}, {
  persist: true,
},)

// 用户数据有Token(用于标识当前用户是否登录)的数据，会持续一段时间才会过期
// 但是Pinia的存储基于内存，刷新就丢失，为了保持状态需要做到刷新不丢失，需要持久化存储
// 保存到浏览器本地localStorage
// 做Pinia数据持久化，可以用pinia插件pinia-plugin-persistedstate
// 看官方文档